From dd48f06e4f43f808776907c229f7ed2c411d30a1 Mon Sep 17 00:00:00 2001 From: Alex Crichton Date: Tue, 23 Sep 2014 22:12:01 -0700 Subject: [PATCH] Fix the dependency graph with root pkg cycles If the root package ended up depending on itself through some development dependency (technically not a cycle), then the resolve phase would currently overwrite some previous result, destroying the progress. By registering the root package as seen early on this prevents the overwriting from happening and instead appending happens. --- src/cargo/core/resolver.rs | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/cargo/core/resolver.rs b/src/cargo/core/resolver.rs index d2af447b6..278fde481 100644 --- a/src/cargo/core/resolver.rs +++ b/src/cargo/core/resolver.rs @@ -306,6 +306,9 @@ pub fn resolve(summary: &Summary, method: ResolveMethod, let _p = profile::start(format!("resolving: {}", summary)); let mut context = Context::new(registry, summary.get_package_id().clone()); + context.seen.insert((summary.get_name().to_string(), + summary.get_source_id().clone()), + summary.get_version().clone()); try!(resolve_deps(summary, method, &mut context)); log!(5, " result={}", context.resolve); Ok(context.resolve) -- 2.30.2